const express = require('express');
const session = require('express-session');
const app = express();
const path = require('path');
const {encryption,createId,addUser} = require('./utils/index');
const fs = require('fs');
// 引入模拟文件数据库
let users = require('./db/data.json');
console.log('users: ', users, typeof users, users instanceof Array);// 确定引入json文件的数据类型

// 支持post数据
app.use(express.urlencoded({extended:false}));
// 支持session
app.use(session({
    secret: 'atguigu', 
    saveUninitialized: false,
    resave: false ,
    cookie:{
        maxAge:1000 * 60 * 60 * 24 * 15
    }
}));
// 支持ejs
app.set('views', path.join(__dirname, 'views'));
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');

// 设置静态资源
app.use(express.static(path.resolve(__dirname, './public')));

// 配置路由
// 展示登录页
app.get('/login', (req, res)=>{
    res.render('login');
})
// 首页
app.get('/index', (req, res)=>{
    res.render('index');
})
// 注册页
app.get('/register', (req, res)=>{
    res.render('register');
})
// 用户提交注册时处理
app.post('/register', (req, res)=>{
    // 1. 将用户添加进users数据库
            // 添加之前要判断用户名是否已经存在，如果存在不添加，不存在添加
    // 2. 添加成功之后，跳转到login登录页面
    let {username, password} = req.body;
    // 添加之前，要对密码进行加密，生成一个唯一id
    let user = {
        id:createId(),
        username,
        password:encryption(password)
    }
    // 判断 username在users是否已经存在 【todo】

    // 添加用户
    users.push(user);
    console.log('users:', users);
    // 1. 将json格式的数组，转化为json格式的字符串
    users = JSON.stringify(users);
    // 2. 添加用户
    addUser(users);
    // 3. 跳转到登录页面
    res.redirect('/login');
})
// 用户中心页
app.get('/ucenter', (req, res)=>{

    res.render('ucenter');
})

app.get('/login', (req, res)=>{
    res.render('login');
})

app.listen(8080, ()=>{
    console.log('server run at 8080');
})